{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "剩余数据条数: 87442\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "data = pd.read_csv('gaze.csv')\n",
    "\n",
    "# 只保留confidence大于等于0.9的数据\n",
    "data = data[data['confidence'] >= 0.9]\n",
    "\n",
    "# 输出剩余数据条数\n",
    "print('剩余数据条数:', len(data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "剩余数据条数: 120036\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "data = pd.read_csv('gaze.csv')\n",
    "\n",
    "# 计算均值和标准差\n",
    "mean_x, std_x = data['norm_pos_x'].mean(), data['norm_pos_x'].std()\n",
    "mean_y, std_y = data['norm_pos_y'].mean(), data['norm_pos_y'].std()\n",
    "\n",
    "# 去除norm_posx和norm_posy中超出3sigma范围的值\n",
    "data = data[(data['norm_pos_x'] >= mean_x - 3 * std_x) & (data['norm_pos_x'] <= mean_x + 3 * std_x)]\n",
    "data = data[(data['norm_pos_y'] >= mean_y - 3 * std_y) & (data['norm_pos_y'] <= mean_y + 3 * std_y)]\n",
    "\n",
    "# 输出剩余数据条数\n",
    "print('剩余数据条数:', len(data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              gaze_timestamp  world_index  confidence  norm_pos_x  norm_pos_y  \\\n",
      "0 1970-01-03 00:29:10.776780            0    0.828006    0.531433    0.397509   \n",
      "1 1970-01-03 00:29:10.776787            0    0.459705    0.337051    0.186147   \n",
      "2 1970-01-03 00:29:10.779709            0    0.888789    0.543140    0.410668   \n",
      "3 1970-01-03 00:29:10.779759            0    0.550258    0.337923    0.173301   \n",
      "4 1970-01-03 00:29:10.787485            1    0.502595    0.340109    0.142989   \n",
      "\n",
      "        base_data  gaze_point_3d_x  gaze_point_3d_y  gaze_point_3d_z  \\\n",
      "0   88150.77678-0        28.369753        52.033135       705.121116   \n",
      "1  88150.776787-1      -142.869866       154.788121       684.981621   \n",
      "2  88150.779709-0        38.942051        45.359863       705.232112   \n",
      "3  88150.779759-1      -141.879169       160.867779       683.893108   \n",
      "4  88150.787485-1      -139.404860       175.088321       681.151453   \n",
      "\n",
      "   eye_center0_3d_x  ...  eye_center0_3d_z  gaze_normal0_x  gaze_normal0_y  \\\n",
      "0         20.000000  ...        -20.000000        0.011527        0.051002   \n",
      "1        -39.934928  ...        -20.075283       -0.141761        0.192518   \n",
      "2         20.000000  ...        -20.000000        0.026087        0.041811   \n",
      "3        -39.934928  ...        -20.075283       -0.140397        0.200891   \n",
      "4        -39.934928  ...        -20.075283       -0.136989        0.220475   \n",
      "\n",
      "   gaze_normal0_z  eye_center1_3d_x  eye_center1_3d_y  eye_center1_3d_z  \\\n",
      "0        0.998632               NaN               NaN               NaN   \n",
      "1        0.971000               NaN               NaN               NaN   \n",
      "2        0.998785               NaN               NaN               NaN   \n",
      "3        0.969501               NaN               NaN               NaN   \n",
      "4        0.965725               NaN               NaN               NaN   \n",
      "\n",
      "   gaze_normal1_x  gaze_normal1_y  gaze_normal1_z  \n",
      "0             NaN             NaN             NaN  \n",
      "1             NaN             NaN             NaN  \n",
      "2             NaN             NaN             NaN  \n",
      "3             NaN             NaN             NaN  \n",
      "4             NaN             NaN             NaN  \n",
      "\n",
      "[5 rows x 21 columns]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "data = pd.read_csv('gaze.csv')\n",
    "\n",
    "# 将gaze_timestamp列转换为指定格式\n",
    "data['gaze_timestamp'] = pd.to_datetime(data['gaze_timestamp'], unit='s') + pd.Timedelta(days=1)\n",
    "\n",
    "# 输出处理后的数据\n",
    "print(data.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据的采样率：427622.6953217262\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "dataframe = pd.read_csv('gaze.csv')\n",
    "\n",
    "# 将gaze_timestamp列转换为datetime类型\n",
    "dataframe['gaze_timestamp'] = pd.to_datetime(dataframe['gaze_timestamp'], unit='ms')\n",
    "\n",
    "# 计算timestamp序列的时间间隔差\n",
    "time_diff = dataframe['gaze_timestamp'].diff().dt.total_seconds()\n",
    "\n",
    "# 计算采样率\n",
    "sampling_rate = 1 / time_diff.mean()\n",
    "print(f\"数据的采样率：{sampling_rate}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                         world_index  confidence  norm_pos_x  norm_pos_y  \\\n",
      "gaze_timestamp                                                             \n",
      "1970-01-02 00:29:10.770          0.0    0.681690    0.437387    0.291906   \n",
      "1970-01-02 00:29:10.780          1.0    0.584288    0.437978    0.307110   \n",
      "1970-01-02 00:29:10.790          1.0    0.679988    0.494694    0.404853   \n",
      "1970-01-02 00:29:10.800          1.0    0.810370    0.494951    0.404822   \n",
      "1970-01-02 00:29:10.810          2.0    0.811268    0.494067    0.401053   \n",
      "1970-01-02 00:29:10.820          2.0    0.893564    0.493605    0.399335   \n",
      "1970-01-02 00:29:10.830          2.0    0.845289    0.493316    0.398559   \n",
      "1970-01-02 00:29:10.840          2.5    0.841835    0.492696    0.398804   \n",
      "1970-01-02 00:29:10.850          3.0    0.813601    0.492874    0.398257   \n",
      "1970-01-02 00:29:10.860          3.0    0.893743    0.492674    0.398524   \n",
      "1970-01-02 00:29:10.870          3.5    0.862389    0.492139    0.398724   \n",
      "1970-01-02 00:29:10.880          4.0    0.892706    0.492170    0.398582   \n",
      "1970-01-02 00:29:10.890          4.0    0.863562    0.491619    0.398328   \n",
      "1970-01-02 00:29:10.900          4.0    0.850346    0.491440    0.398221   \n",
      "1970-01-02 00:29:10.910          5.0    0.878314    0.491522    0.397330   \n",
      "1970-01-02 00:29:10.920          5.0    0.864336    0.491490    0.396538   \n",
      "1970-01-02 00:29:10.930          5.0    0.998242    0.491106    0.396239   \n",
      "1970-01-02 00:29:10.940          5.6    0.822405    0.491349    0.396675   \n",
      "1970-01-02 00:29:10.950          6.0    0.837220    0.491234    0.397143   \n",
      "1970-01-02 00:29:10.960          6.0    0.860573    0.490922    0.397230   \n",
      "\n",
      "                         gaze_point_3d_x  gaze_point_3d_y  gaze_point_3d_z  \\\n",
      "gaze_timestamp                                                               \n",
      "1970-01-02 00:29:10.770       -54.359308       103.262224       694.806989   \n",
      "1970-01-02 00:29:10.780       -42.813406        41.035419        10.103229   \n",
      "1970-01-02 00:29:10.790         1.979829       -20.040517      -292.334754   \n",
      "1970-01-02 00:29:10.800         1.859581       -19.717564      -287.721641   \n",
      "1970-01-02 00:29:10.810         2.204797       -20.676414      -290.218427   \n",
      "1970-01-02 00:29:10.820         2.409602       -21.335674      -294.369777   \n",
      "1970-01-02 00:29:10.830         2.512630       -21.451642      -293.704395   \n",
      "1970-01-02 00:29:10.840         2.767211       -21.566487      -295.993985   \n",
      "1970-01-02 00:29:10.850         2.711425       -21.777256      -297.274745   \n",
      "1970-01-02 00:29:10.860         2.798286       -21.804480      -298.433361   \n",
      "1970-01-02 00:29:10.870         3.005405       -21.779999      -298.687614   \n",
      "1970-01-02 00:29:10.880         3.002544       -21.876653      -299.589471   \n",
      "1970-01-02 00:29:10.890         3.227031       -22.022033      -300.826326   \n",
      "1970-01-02 00:29:10.900         3.300165       -22.075103      -301.234553   \n",
      "1970-01-02 00:29:10.910         3.278969       -22.336895      -302.166428   \n",
      "1970-01-02 00:29:10.920         3.308013       -22.621279      -303.673027   \n",
      "1970-01-02 00:29:10.930         3.462726       -22.723509      -304.165507   \n",
      "1970-01-02 00:29:10.940         3.365049       -22.609107      -303.908032   \n",
      "1970-01-02 00:29:10.950         3.410404       -22.507586      -303.923452   \n",
      "1970-01-02 00:29:10.960         3.540623       -22.548167      -304.725183   \n",
      "\n",
      "                         eye_center0_3d_x  eye_center0_3d_y  eye_center0_3d_z  \\\n",
      "gaze_timestamp                                                                  \n",
      "1970-01-02 00:29:10.770         -9.967464         14.998960        -20.037641   \n",
      "1970-01-02 00:29:10.780          0.021691         14.999306        -20.025094   \n",
      "1970-01-02 00:29:10.790         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.800         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.810         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.820         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.830         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.840         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.850         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.860         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.870         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.880         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.890         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.900         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.910         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.920         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.930         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.940         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.950         20.000000         15.000000        -20.000000   \n",
      "1970-01-02 00:29:10.960         20.000000         15.000000        -20.000000   \n",
      "\n",
      "                         gaze_normal0_x  gaze_normal0_y  gaze_normal0_z  \\\n",
      "gaze_timestamp                                                            \n",
      "1970-01-02 00:29:10.770       -0.061136        0.121556        0.984479   \n",
      "1970-01-02 00:29:10.780       -0.014355        0.095046        0.987478   \n",
      "1970-01-02 00:29:10.790        0.065145        0.027374        0.997500   \n",
      "1970-01-02 00:29:10.800        0.066672        0.024890        0.997463   \n",
      "1970-01-02 00:29:10.810        0.064772        0.024500        0.997599   \n",
      "1970-01-02 00:29:10.820        0.063058        0.025140        0.997693   \n",
      "1970-01-02 00:29:10.830        0.062845        0.027284        0.997650   \n",
      "1970-01-02 00:29:10.840        0.061422        0.025921        0.997775   \n",
      "1970-01-02 00:29:10.850        0.061335        0.026011        0.997778   \n",
      "1970-01-02 00:29:10.860        0.060777        0.025339        0.997830   \n",
      "1970-01-02 00:29:10.870        0.059995        0.025130        0.997882   \n",
      "1970-01-02 00:29:10.880        0.059813        0.025071        0.997894   \n",
      "1970-01-02 00:29:10.890        0.058765        0.024700        0.997966   \n",
      "1970-01-02 00:29:10.900        0.058422        0.024264        0.997997   \n",
      "1970-01-02 00:29:10.910        0.058302        0.025038        0.997985   \n",
      "1970-01-02 00:29:10.920        0.057891        0.025402        0.997999   \n",
      "1970-01-02 00:29:10.930        0.057256        0.025568        0.998032   \n",
      "1970-01-02 00:29:10.940        0.057648        0.025339        0.998015   \n",
      "1970-01-02 00:29:10.950        0.057488        0.024511        0.998045   \n",
      "1970-01-02 00:29:10.960        0.056879        0.024088        0.998090   \n",
      "\n",
      "                         eye_center1_3d_x  eye_center1_3d_y  eye_center1_3d_z  \\\n",
      "gaze_timestamp                                                                  \n",
      "1970-01-02 00:29:10.770               NaN               NaN               NaN   \n",
      "1970-01-02 00:29:10.780        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.790        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.800        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.810        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.820        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.830        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.840        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.850        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.860        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.870        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.880        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.890        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.900        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.910        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.920        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.930        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.940        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.950        -39.934928         14.997919        -20.075283   \n",
      "1970-01-02 00:29:10.960        -39.934928         14.997919        -20.075283   \n",
      "\n",
      "                         gaze_normal1_x  gaze_normal1_y  gaze_normal1_z  \n",
      "gaze_timestamp                                                           \n",
      "1970-01-02 00:29:10.770             NaN             NaN             NaN  \n",
      "1970-01-02 00:29:10.780       -0.145087        0.230744        0.962137  \n",
      "1970-01-02 00:29:10.790       -0.150232        0.224797        0.962738  \n",
      "1970-01-02 00:29:10.800       -0.152198        0.229156        0.961410  \n",
      "1970-01-02 00:29:10.810       -0.151952        0.234021        0.960284  \n",
      "1970-01-02 00:29:10.820       -0.150413        0.234215        0.960478  \n",
      "1970-01-02 00:29:10.830       -0.151138        0.233532        0.960531  \n",
      "1970-01-02 00:29:10.840       -0.150791        0.233569        0.960577  \n",
      "1970-01-02 00:29:10.850       -0.149916        0.233780        0.960662  \n",
      "1970-01-02 00:29:10.860       -0.149606        0.233583        0.960758  \n",
      "1970-01-02 00:29:10.870       -0.150185        0.233384        0.960716  \n",
      "1970-01-02 00:29:10.880       -0.149704        0.233300        0.960812  \n",
      "1970-01-02 00:29:10.890       -0.149820        0.233547        0.960734  \n",
      "1970-01-02 00:29:10.900       -0.149847        0.233968        0.960627  \n",
      "1970-01-02 00:29:10.910       -0.149284        0.234162        0.960668  \n",
      "1970-01-02 00:29:10.920       -0.148602        0.234394        0.960717  \n",
      "1970-01-02 00:29:10.930       -0.148867        0.234479        0.960655  \n",
      "1970-01-02 00:29:10.940       -0.148678        0.234164        0.960761  \n",
      "1970-01-02 00:29:10.950       -0.148821        0.234277        0.960712  \n",
      "1970-01-02 00:29:10.960       -0.148850        0.234256        0.960712  \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86188\\AppData\\Local\\Temp\\ipykernel_13060\\1603226952.py:12: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n",
      "  data = data.resample('10ms').mean()\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "data = pd.read_csv('gaze.csv')\n",
    "\n",
    "# 将gaze_timestamp列转换为datetime类型\n",
    "data['gaze_timestamp'] = pd.to_datetime(data['gaze_timestamp'], unit='s')\n",
    "\n",
    "# 将gaze_timestamp列设置为索引\n",
    "data = data.set_index('gaze_timestamp')\n",
    "\n",
    "# 重新采样为100Hz的数据\n",
    "data = data.resample('10ms').mean()\n",
    "\n",
    "# 输出前20行数据\n",
    "print(data.head(20))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.10.5"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
